package api_sys

import (
	"github.com/gin-gonic/gin"
	"strconv"
	"wrblog-api-go/app/common/token"
	"wrblog-api-go/app/model/model_sys"
	"wrblog-api-go/app/service/service_sys"
	"wrblog-api-go/pkg/request"
	"wrblog-api-go/pkg/result"
	"wrblog-api-go/pkg/status"
)

// @Tags  System - 角色管理
// @Summary  获取角色列表
// @Accept json
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param sysRole query model_sys.SelectSysRole true "sysRole"
// @Success 200 {object} result.Result "OK"
// @Router /sysRole/page [get]
func ApiSysRolePageList(c *gin.Context) {
	raw, _ := c.Get(request.BindObj)
	sysRole := raw.(model_sys.SelectSysRole)
	result.Page(service_sys.GetSysRolePageList(sysRole)).Json(c)
}

// @Tags  System - 角色管理
// @Summary  获取角色详情
// @Accept json
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param roleId path int true "roleId"
// @Success 200 {object} result.Result "OK"
// @Router /sysRole/{roleId} [get]
func ApiSysRoleById(c *gin.Context) {
	roleId, err := strconv.Atoi(c.Param("roleId"))
	if err != nil {
		result.Wrap(status.BadRequest, "参数读取失败").Json(c)
	} else {
		result.Res(service_sys.GetSysRoleById(roleId)).Json(c)
	}
}

// @Tags  System - 角色管理
// @Summary  添加角色
// @Accept json
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param sysRole body model_sys.SysRole true "sysRole"
// @Success 200 {object} result.Result "OK"
// @Router /sysRole/add [post]
func ApiAddSysRole(c *gin.Context) {
	raw, _ := c.Get(request.BindObj)
	sysRole := raw.(model_sys.SysRolePo)
	sysRole.CreateBy = token.GetUk(c)
	result.Res(service_sys.AddSysRole(sysRole)).Json(c)
}

// @Tags  System - 角色管理
// @Summary  修改角色
// @Accept json
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param sysRole body model_sys.SysRole true "sysRole"
// @Success 200 {object} result.Result "OK"
// @Router /sysRole/edit [put]
func ApiEditSysRole(c *gin.Context) {
	raw, _ := c.Get(request.BindObj)
	sysRole := raw.(model_sys.SysRolePo)
	sysRole.UpdateBy = token.GetUk(c)
	result.Res(service_sys.EditSysRole(sysRole)).Json(c)
}

// @Tags  System - 角色管理
// @Summary  删除角色[逻辑删除]
// @Accept json
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param roleIds query string true "roleIds"
// @Success 200 {object} result.Result "OK"
// @Router /sysRole/removes [delete]
func ApiRemoveSysRole(c *gin.Context) {
	roleIds := c.Query("roleIds")
	result.Res(service_sys.RemoveSysRole(roleIds, token.GetUk(c))).Json(c)
}
